import server from '@/utils/http';
import { Pagination } from '@/types/table';

enum Api {
    mqAccount = '/api/mqAccount',
    mqAccountPage = '/api/mqAccount/page',
    typeSeries = '/api/deviceType',
    typeSeriesPage = '/api/deviceType/page',
    modelUrl = '/api/deviceSpecs/page',
    addModelUrl = '/api/deviceSpecs',
    barCode = '/api/deviceBarcode',
    barcodePage = '/api/deviceBarcode/page',
    mqAccountRefresh = '/api/mqAccount/refresh',
    mqAccountFreeze = '/api/mqAccount/freeze',
}

/**
 * @description 获取MQ账号列表
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getMQAccountData = (query: Pagination): Promise<mqList> => {
    return server.Get(Api.mqAccountPage, query);
};

/**
 *
 * @description 新增MQ账号
 * @param addMQ info
 */
export const addMQAccount = (params: NormalObj): Promise<void> => {
    return server.Post(Api.mqAccount, params);
};

/**
 *
 * @description 刷新MQ账号
 * @param addMQ info
 */
export const postMQAccountRefresh = (): Promise<void> => {
    return server.Post(Api.mqAccountRefresh);
};

/**
 * @description 获取类型系列列表
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getTypes = (query: Pagination): Promise<mqList> => {
    return server.Get(Api.typeSeriesPage, query);
};

/**
 *
 * @description 删除类型系列
 * @param ids 类型系列id
 */
export const deleteTypes = (params: (string | number)[]): Promise<void> => {
    return server.Delete(Api.typeSeries, { data: params });
};

/**
 *
 * @description 冻结、解冻MQ账号
 * @param id 类型系列id
 */
export const putmqAccountFreeze = (params: string | number): Promise<void> => {
    return server.Put(Api.mqAccountFreeze + `?id=${params}`);
};

/**
 *
 * @description 新增类型系列
 * @param addType info
 */
export const addType = (params: NormalObj): Promise<void> => {
    return server.Post(Api.typeSeries, params);
};

/**
 *
 * @description 编辑类型系列
 * @param editType info
 */
export const editType = (params: NormalObj): Promise<void> => {
    return server.Put(Api.typeSeries, params);
};

/**
 * @description 获取型号列表
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getModels = (query: Pagination): Promise<mqList> => {
    return server.Get(Api.modelUrl, query);
};

/**
 *
 * @description 新增型号
 * @param addModel info
 */
export const addModel = (params: NormalObj): Promise<void> => {
    return server.Post(Api.addModelUrl, params);
};

/**
 *
 * @description 编辑类型系列
 * @param editModel info
 */
export const editModel = (params: NormalObj): Promise<void> => {
    return server.Put(Api.addModelUrl, params);
};

/**
 * @description 获取设备条码列表
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getProd = (query: Pagination): Promise<mqList> => {
    return server.Get(Api.barcodePage, query);
};

/**
 *
 * @description 新增设备条码
 * @param addType info
 */
export const addProd = (params: NormalObj): Promise<void> => {
    return server.Post(Api.barCode, params);
};

/**
 *
 * @description 删除设备条码
 * @param addType info
 */
export const deleteProd = (params: (string | number)[]): Promise<void> => {
    return server.Delete(Api.barCode, { data: params });
};
